package com.ibm.cloud.banking.facade.customer;

import com.ibm.cloud.banking.facade.customer.dto.*;

import java.util.List;

public interface ICustomerCommandFacade {
	final static String DOMAIN_CUSTOMER="customer";
	String ATOMIC_ENDPOINT_PATH = "/atomic/";
	static final String PATH=ATOMIC_ENDPOINT_PATH+DOMAIN_CUSTOMER+"/";

//	static String QUERY_CUSTOMER=PATH+"query";
//	CustomerDTO queryCustomer(String custNo);
	
//	static String CREATE_CUSTOMER=PATH+"create";
//	CustomerDTO createCustomer(String custNo,String custName);
	
//	static String DELETE_CUSTOMER=PATH+"delete";
//	void deleteCustomer(String custNo);
	Integer deleteCustomer(String idType, String idNo, String name);

	String GET_CUSTOMER=PATH+"getCustomer";
	QueryCustomerRespDTO getCustomer(String idType, String idNo, String name);
	QueryCustomerRespDTO getCustomer(CustomerCertificateDTO certificateDTO);

	String GET_CUSTOMER_ACCOUNT=PATH+"getCustSingleProductAccts";
	List<CustomerAccountRelDTO> getCustSingleProductAccts(String custNo, String productNo, String accountCategory);

	public List<CustomerAccountRelDTO> getCustSingleProductAccts(CustomerAccountRelDTO customerAccountRelDTO);



	String SAVE_CUSTOMER_ACCOUNT=PATH+"savingCustAcctRel";
	Integer savingCustAcctRel(CustomerAccountRelDTO custAcctRelDto);

	String GENERATE_CUSTOMER_NO=PATH+"generateCustNo";
	String generateCustNo(CreateCustomerDTO customer);

	String CREATE_NEW_CUSTOMER=PATH+"save";
	int addNewCustomer(CreateCustomerDTO customer);

	String IS_EXIST=PATH+"isExist";
	boolean isExist(CustomerCertificateDTO certificateDTO);

	String SAVE_CUSTOMER_CERTIFICATE=PATH+"saveCustomerCertificate";
	CustomerCertificateDTO saveCustomerCertificate(CustomerCertificateDTO certificateDTO);

	String GET_CUSTOMER_CERTIFICATE=PATH+"getCustomerCertificate";
	CustomerCertificateDTO getCustomerCertificate(CustomerCertificateDTO customerCertificate);

	String GET_CUSTOMER_BY_NO=PATH+"getCustByNo";
	QueryCustomerRespDTO getCustomerByNo(String customerNo);


	Boolean deleteCustomerCertificate(CustomerCertificateDTO certificateDTO);
	
//	static final String QUERY_ACCTS_BY_CUSTNO=PATH+"queryAcctsByCustNo";
    List<CustAcctRelDTO> selectAcctsByCustNo(String custNo);

	void deleteCustAcctRel(CustomerAccountRelDTO custAcctRel);

//	String SAVE_CUSTOMER_OPERATION_LOG=PATH+"saveOperationLog";
//	int saveOperationLog(CustomerOperationLogDTO operationLogDTO);

}
